package mn.idax.exchange.otc.service;

import mn.idax.exchange.otc.domain.UserListResultDTO;
import mn.idax.exchange.otc.entity.OTCComment;
import mn.idax.exchange.otc.entity.OTCUser;
import mn.idax.exchange.otc.vo.*;

import java.math.BigDecimal;

/**
 * Create by jack_huang on 2018/8/9
 */
public interface OTCUserService {

    Boolean addUserGoodRate(OTCComment otcComment);

    Boolean updateUserGoodRate(OTCComment oldComment,OTCComment newComment);

    //黑名单 信任名单 展示
    UserListResultDTO getUserGroupMembers(UserPageParamsDTO userPageParamsDTO);

    //添加白名单
    Boolean addGoodList(Integer beControlUserId, Integer useId);

    //移除黑白名单
    Boolean removeTrustOrBlack(Integer beControlUserId, Integer userId);

    //添加黑名单
    Boolean addBlackList(Integer beControlUserId, Integer userId);

    OTCUser getOTCUserByUserId(Integer userId);

    /**
     *
     * 功能描述:
     *      修改用户交易量
     * @param:
     * @return:
     * @auther: dison
     * @date: 2018/8/16 18:49
     */
    int updateTradenumber(OTCUser updateUser,Integer oldTradenumber);


    /**
     *
     * 功能描述:
     *      修改用户的成交额和交易量
     * @param:
     * @return:
     * @auther: dison
     * @date: 2018/8/20 17:25
     */
   int updateTradenumberAndTurnover(Integer userId,BigDecimal amount);

    /**
     *
     * 功能描述:
     *      修改买卖双方的交易量
     * @param:
     * @return:
     * @auther: dison
     * @date: 2018/8/16 19:00
     */
    boolean updateTradenumberBySellerAndBuyer(Integer sellerId,Integer buyerId);
    
    OTCUserADSummaryDTO selectByUserId(Integer userId);

    /**
     *
     * 功能描述:
     *      修改用户的交易信息
     * @param:
     * @return:
     * @auther: dison
     * @date: 2018/8/20 17:46
     */
    boolean updateTransactionInfoBySellerAndBuyer(Integer sellerId,Integer buyerId,BigDecimal amount);

    //当前用户收录的信任名单数和黑名单数
    UserCollectionUsersDTO getUserCollectionUsers(Integer userId);

    //当前用户收到的好评数和差评数
    UserGoodNumAndBadNum getUserGoodNumAndBadNum(Integer userId);

    //uniqueKey get user
    OTCUser getOtcUserByUniqueKey(String uniquekey);

    OTCUser getOTCUserByUniqueKey(String uniquekey);

    /**
     *
     * 功能描述:
     *      插入用户数据
     * @param:
     * @return:
     * @auther: dison
     * @date: 2018/8/24 13:50
     */
    boolean insertSelective(OTCUser otcUser);


    /**
     *
     * 功能描述:
     *      修改用户头像
     * @param:
     * @return:
     * @auther: dison
     * @date: 2018/8/24 15:31
     */
    boolean updateIcon(int userId,String icon);


    OTCUserADSummaryDTO getSummaryByUserId(Integer userId);

    //订单详情中的user信息
    UserInfoResultDTO getUserInfo(Integer userId);

    //更改isupdate字段为true，已修改过昵称
    int updateIsUpdated(Integer userId,OTCUser otcUser);

    /**
     *
     * 功能描述:
     *      同步场内用户信息
     * @param:
     * @return:
     * @auther: dison
     * @date: 2018/9/12 13:37
     */
    int syncOtcUser();

    String getLastLogintime(Integer userid);

    String getUserIconUrl(Integer userid);

    /**
     * 更新用户好评
     * @param userid
     */
    void updateUserGoodRate(Integer userid);
}
